package aOrganizar;

import java.util.ArrayList;
import java.util.Date;

import fechas.FechaUtils;

public class Itinerario implements Cloneable {

	private ArrayList<Asiento> asientos;

	public Itinerario() {
		asientos = new ArrayList<Asiento>();

	}

	/**
	 * 
	 * @return
	 */
	public Boolean disponible() {
		for (Asiento asiento : asientos) {
			if (asiento.getEstado() != "D") {
				return false;

			}
		}
		return true;
	}

	/**
	 * 
	 * @return
	 */
	public Date duracion() {
		Asiento primerAsiento = asientos.get(0);
		Asiento ultimoAsiento = asientos.get(asientos.size());
		return FechaUtils.duracionIntervalo(ultimoAsiento.llegada(),
				primerAsiento.salida());

	}

	/**
	 * retorna el precio de los asientos del itinerario.
	 * 
	 * @return
	 */
	public Double getPrecio() {

		Double precio = 0.0;
		for (Asiento asiento : asientos) {
			precio += asiento.getPrecio();
		}

		return precio;
	}

	/**
	 * Si alguno de los asientos contenidos es VIP, entonces el itinerario es
	 * VIP.
	 * 
	 * @return
	 */
	public Boolean esSuperOferta() {
		for (Asiento asiento : asientos) {
			if (asiento.esSuperOferta())
				return true;
		}
		return false;
	}

	public ArrayList<Asiento> getAsientos() {
		return asientos;
	}

	public void setAsientos(ArrayList<Asiento> asientos) {
		this.asientos = asientos;
	}

	public Itinerario clone() {
		Itinerario itinerario = new Itinerario();
		ArrayList<Asiento> listAsiento = new ArrayList<Asiento>();
		for (Asiento asiento : this.getAsientos()) {
			listAsiento.add(asiento);
		}
		itinerario.setAsientos(listAsiento);
		return itinerario;
	}

	public Integer popularidad() {
		int vendidos = 0;
		for (Asiento asiento : asientos) {
			vendidos = vendidos + asiento.popularidadVuelo();
		}
		return vendidos;

	}

	public Boolean sosDeubicacion(String ubicacion) {
		for (Asiento asiento : asientos) {
			if (asiento.getUbicacion() != ubicacion)
				return false;

		}
		return true;
	}

	public Boolean sosDeClase(String claseBuscada) {
		for (Asiento asiento : asientos) {
			if (asiento.getClase() != claseBuscada) {
				return false;
			}
		}
		return true;
	}

}
